#include <stdio.h>
#include <math.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <iostream>
#include "arraylist.h"

#define MAX(x,y) ((x)<(y) ? (y) : (x))

typedef struct{
	int id;
	int peso;
	int beneficio;
	double benef_relativo;
} Objeto;


// UTIL
void print_vetor(int *vetor, int n);
void le_arquivo(const char *nomearq, int *vetor, int n);
void le_matriz(const char *nomearq, int **vetor,int n, int m);
int calcula_fo(int *s, int num_objetos, int *p, int *w, int b);
void imprime_solucao(int *s, int num_objetos, int *p, int *w, int b);
const Boolean obj_equals(const Object object_1, const Object object_2);
Arraylist cria_lista_objetos(int n, int *s, int *p, int *w);
Arraylist cria_lista_objetos_ordenada(int n, int *s, int *p, int *w);
void imprime_lista(Arraylist lista);
void troca_bit(int *s, int j);

// Contrutivos


// Busca Local


//Metaheurística
void grasp(int n, int *s, int *p, int *w, int b);
